home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / pc / LOGIC Apple II 5.25" Library - DOS Part 3 / DOS065.dsk / FAMILY FINANCE (C).bas < prev    next >
BASIC Source File  |  2012-02-16  |  8KB  |  212 lines

  1. 0  GOTO 40
  2. 1  REM **************************
  3. 2  REM * FAMILY FINANCE         *
  4. 3  REM * COPYRIGHT (C) 1980     *
  5. 4  REM * KURT G. SCHUMACHER     *
  6. 5  REM * ARLINGTON HEIGHTS, IL  *
  7. 6  REM * DONATED BY AUTHOR TO   *
  8. 7  REM * NORTHERN ILLINOIS AUG  *
  9. 8  REM * DECLARED PUBLIC DOMAIN *
  10. 9  REM **************************
  11. 10  VTAB 24: CALL  -868:EF = 0: RETURN : REM    ERASE ERROR MSG
  12. 20  FOR Q = 1 TO  LEN(Q$):QQ$ =  MID$ (Q$,Q,1)
  13. 23  IF QQ$ = "+"  OR QQ$ = "-"  OR QQ$ = "."  THEN 27
  14. 25  IF  ASC(QQ$) <48  OR  ASC(QQ$) >57  THEN  VTAB 24: PRINT G$;"PLEASE ENTER A NUMBER";:EF = 1: RETURN 
  15. 27  NEXT Q: RETURN 
  16. 30  VTAB 24: PRINT G$;"NUMBER OUT OF RANGE - PLEASE REENTER";: RETURN : REM     PRINT ERROR MSG
  17. 40  TEXT : CLEAR : SPEED= 255: GOSUB 1400
  18. 50  HOME 
  19. 60  PRINT "F A M I L Y   F I N A N C E"
  20. 70  PRINT : PRINT "  0) END PROGRAM"
  21. 80  PRINT : PRINT "  1) LOAD FILE FROM DISK"
  22. 90  PRINT : PRINT "  2) SAVE FILE TO DISK"
  23. 100  PRINT : PRINT "  3) ENTER BUDGET DATA"
  24. 110  PRINT : PRINT "  4) DISPLAY BUDGET DATA"
  25. 120  VTAB 14: PRINT : INPUT "ENTER FUNCTION NUMBER (0-4): ";Q$
  26. 123  GOSUB 10
  27. 125  GOSUB 20: IF EF = 1  THEN 120
  28. 127 N =  VAL(Q$)
  29. 130  IF N = 0  THEN 170
  30. 140  IF N <1  OR N >4  THEN  GOSUB 30: GOTO 120
  31. 150  ON N GOSUB 230,330,400,700
  32. 160  GOTO 50
  33. 170  HOME : IF   NOT CH  THEN  END : REM  DATA SAVED
  34. 180  PRINT "THE DATA CURRENTLY IN MEMORY HAS": PRINT "BEEN CHANGED, BUT NOT SAVED.": PRINT 
  35. 190  INPUT "DO YOU WISH TO SAVE IT? (Y/N) ";Q$
  36. 200  IF Q$ = "Y"  THEN 330
  37. 210  IF Q$ < >"N"  THEN  PRINT G$: GOTO 190
  38. 220  HOME : END 
  39. 230  HOME : IF   NOT CH  THEN 280
  40. 240  PRINT "THE DATA IN CURRENTLY IN MEMORY HAS": PRINT "BEEN CHANGED, BUT NOT SAVED.": PRINT 
  41. 250  INPUT "DO YOU WISH TO SAVE IT? (Y/N) ";Q$
  42. 260  IF Q$ = "Y"  THEN 330
  43. 270  IF Q$ < >"N"  THEN  PRINT G$: GOTO 250
  44. 280  INPUT "ENTER YEAR: ";F$
  45. 285 F$ = "BUDGET FILE." +F$
  46. 290 BL$ = "BLOAD " +F$ +",A"
  47. 300  & A%(0,0,0)
  48. 310  PRINT D$;BL$; PEEK(936) +256 * PEEK(937)
  49. 320  RETURN 
  50. 330  HOME 
  51. 340  INPUT "ENTER YEAR: ";F$
  52. 345 F$ = "BUDGET FILE." +F$
  53. 350 BS$ = "BSAVE " +F$ +",A":L$ = ",L"
  54. 360 LN = 32 *18 *13 *2
  55. 370  & A%(0,0,0)
  56. 380  PRINT D$;BS$; PEEK(936) +256 * PEEK(937);L$;LN
  57. 385 CH = 0
  58. 390  RETURN 
  59. 400  HOME 
  60. 410  VTAB 1: PRINT "ENTER MONTH (1-12):"
  61. 420  VTAB 2: PRINT "ENTER DAY (1-31):"
  62. 430  FOR I = 1 TO 9: VTAB I +3
  63. 440  PRINT I;")  ";A$(I): NEXT I
  64. 450  FOR I = 10 TO 17: VTAB I -9 +3: HTAB 20
  65. 460  PRINT I;")  ";A$(I): NEXT I
  66. 470  VTAB 20: PRINT "ENTER CATEGORY (1-17):"
  67. 480  VTAB 21: PRINT "ENTER AMOUNT:"
  68. 485  VTAB 23: PRINT "('0' RETURNS TO NEXT HIGHER ENTRY)
  69. 490  VTAB 1: HTAB 21: CALL  -868: PRINT  CHR$(95); CHR$(95): VTAB 1: HTAB 21: INPUT "";Q$
  70. 493  GOSUB 10
  71. 495  GOSUB 20: IF EF = 1  THEN 490
  72. 497 M =  VAL(Q$)
  73. 500  IF M = 0  THEN  RETURN 
  74. 510  IF M <1  OR M >12  THEN  GOSUB 30: GOTO 490
  75. 520  VTAB 2: HTAB 19: CALL  -868: PRINT  CHR$(95); CHR$(95): VTAB 2: HTAB 19: INPUT "";Q$
  76. 523  GOSUB 10
  77. 525  GOSUB 20: IF EF = 1  THEN 520
  78. 527 D =  VAL(Q$)
  79. 530  IF D = 0  THEN 490
  80. 540  IF D <1  OR D >31  THEN  GOSUB 30: GOTO 520
  81. 550  VTAB 20: HTAB 24: CALL  -868: PRINT  CHR$(95); CHR$(95): VTAB 20: HTAB 24: INPUT "";Q$
  82. 553  GOSUB 10
  83. 555  GOSUB 20: IF EF = 1  THEN 550
  84. 557 C =  VAL(Q$)
  85. 560  IF C = 0  THEN 520
  86. 570  IF C <1  OR C >17  THEN  GOSUB 30: GOTO 550
  87. 580  VTAB 21: HTAB 15: FOR I = 1 TO 6: PRINT  CHR$(95);: NEXT I: VTAB 21: HTAB 15: INPUT "";Q$
  88. 583  GOSUB 10
  89. 585  GOSUB 20: IF EF = 1  THEN 580
  90. 587 N =  VAL(Q$)
  91. 590  IF N = 0  THEN 610
  92. 600 N1 = N1 +N: VTAB 21: HTAB 27: PRINT "TOTAL = ";N1;: GOTO 580
  93. 610 N1 = N1 +.5:N% = N1
  94. 620 A%(D,C,M) = A%(D,C,M) +N%
  95. 630 A%(0,C,M) = A%(0,C,M) +N%
  96. 640  IF C = 1  THEN 670
  97. 650 A%(D,0,M) = A%(D,0,M) +N%
  98. 660 A%(0,0,M) = A%(0,0,M) +N%
  99. 670 N1 = 0: REM  CLEAR TOTAL
  100. 680 CH = 1: REM  SET DATA CHANGED FLAG
  101. 690  GOTO 550
  102. 700  HOME 
  103. 705  PRINT : PRINT "  0) RETURN"
  104. 710  PRINT : PRINT "  1) MONTHLY"
  105. 720  PRINT : PRINT "  2) YEARLY"
  106. 730  VTAB 8: HTAB 1: INPUT "ENTER DISPLAY TYPE (0-2): ";Q$
  107. 733  GOSUB 10
  108. 735  GOSUB 20: IF EF = 1  THEN 730
  109. 737 N =  VAL(Q$)
  110. 740  IF N = 0  THEN  RETURN 
  111. 745  IF N <0  OR N >2  THEN  GOSUB 30: GOTO 730
  112. 750  ON N GOSUB 770,1040
  113. 760  GOTO 700
  114. 770  HOME 
  115. 780  VTAB 2: HTAB 1: INPUT "ENTER MONTH (1-12) OR '0' TO RETURN: ";Q$
  116. 783  GOSUB 10
  117. 785  GOSUB 20: IF EF = 1  THEN 780
  118. 787 M =  VAL(Q$)
  119. 790  IF M = 0  THEN  RETURN 
  120. 800  IF M <1  OR M >12  THEN  GOSUB 30: GOTO 780
  121. 810  HOME : PRINT M$(M)
  122. 820  FOR I = 1 TO 17: VTAB I +2: PRINT A$(I): NEXT I
  123. 830  VTAB 21: PRINT "TOTL"
  124. 840  VTAB 1:HT = 36:L = 5
  125. 850  HTAB HT: PRINT "TOTL"
  126. 860  FOR I = 1 TO 17:F$ =  STR$(A%(0,I,M))
  127. 870  VTAB I +2: HTAB HT: PRINT "     ": VTAB I +2: GOSUB 1370
  128. 880  NEXT I
  129. 890 F$ =  STR$(A%(0,0,M)): VTAB 21: HTAB HT: PRINT "     ": VTAB 21: GOSUB 1370
  130. 900 D = 1:L = 4
  131. 910 HT = 1: FOR J = D TO D +5
  132. 920 HT = HT +5
  133. 930  VTAB 1: HTAB HT +1: PRINT "  ": VTAB 1: HTAB HT +1: PRINT J
  134. 940  FOR I = 1 TO 17:F$ =  STR$(A%(J,I,M))
  135. 950  VTAB I +2: HTAB HT: PRINT "    ": VTAB I +2: GOSUB 1370
  136. 960  NEXT I
  137. 970 F$ =  STR$(A%(J,0,M)): VTAB 21: HTAB HT: PRINT "    ": VTAB 21: GOSUB 1370
  138. 980  NEXT J
  139. 990  VTAB 23: HTAB 1: INPUT "ENTER DAY (1-31) OR '0' TO RETURN: ";Q$
  140. 993  GOSUB 10
  141. 995  GOSUB 20: IF EF = 1  THEN 990
  142. 997 D =  VAL(Q$)
  143. 1000  IF D = 0  THEN  RETURN 
  144. 1010  IF D <1  OR D >31  THEN  GOSUB 30: GOTO 990
  145. 1020  IF D >26  THEN D = 26
  146. 1030  GOTO 910
  147. 1040  HOME 
  148. 1050  PRINT "COMPUTING YEARLY TOTALS..."
  149. 1060  FOR M = 1 TO 12
  150. 1070  FOR C = 1 TO 17
  151. 1080 Y%(M,C) = A%(0,C,M)
  152. 1090 Y%(0,C) = Y%(0,C) +Y%(M,C)
  153. 1100  IF C = 1  THEN 1130
  154. 1110 Y%(M,0) = Y%(M,0) +Y%(M,C)
  155. 1120 Y%(0,0) = Y%(0,0) +Y%(M,C)
  156. 1130  NEXT C
  157. 1140  NEXT M
  158. 1145  HOME 
  159. 1150  FOR C = 1 TO 17: VTAB C +2: PRINT A$(C): NEXT C
  160. 1160  VTAB 21: PRINT "TOTL"
  161. 1170 HT = 35:L = 6: VTAB 1: HTAB HT +1: PRINT "TOTL"
  162. 1180  FOR C = 1 TO 17
  163. 1190 F$ =  STR$(Y%(0,C)): VTAB C +2: HTAB HT: PRINT "      "
  164. 1200  VTAB C +2: GOSUB 1370: NEXT C
  165. 1210 F$ =  STR$(Y%(0,0)): VTAB 21: GOSUB 1370
  166. 1220 M = 1
  167. 1230 HT = 0:L = 5
  168. 1240  FOR I = M TO M +3:HT = HT +7
  169. 1250  VTAB 1: HTAB HT +1: PRINT M$(I)
  170. 1260  FOR C = 1 TO 17
  171. 1270 F$ =  STR$(Y%(I,C)): VTAB C +2: HTAB HT: PRINT "     "
  172. 1280  VTAB C +2: GOSUB 1370: NEXT C
  173. 1290 F$ =  STR$(Y%(I,0)): VTAB 21: HTAB HT: PRINT "     "
  174. 1300  VTAB 21: GOSUB 1370
  175. 1310  NEXT I
  176. 1320  VTAB 23: HTAB 1: INPUT "ENTER MONTH (1-12) OR '0' TO RETURN: ";Q$
  177. 1323  GOSUB 10
  178. 1325  GOSUB 20: IF EF = 1  THEN 1320
  179. 1327 M =  VAL(Q$)
  180. 1330  IF M = 0  THEN  RETURN 
  181. 1340  IF M <1  OR M >12  THEN  GOSUB 30: GOTO 1320
  182. 1350  IF M >9  THEN M = 9
  183. 1360  GOTO 1230
  184. 1370  IF F$ = "0"  THEN 1390
  185. 1380  HTAB HT +L - LEN(F$): PRINT F$: RETURN 
  186. 1390  HTAB HT +L -1: PRINT ".": RETURN 
  187. 1400  DIM A%(31,17,12),A$(17),M$(12),Y%(12,17)
  188. 1405  FOR I = 1 TO 17: READ A$(I): NEXT I
  189. 1410  DATA "INCM","MORT","FOOD","CAR"
  190. 1420  DATA "MED","CLTH","HOBY","ENTR"
  191. 1430  DATA "TRNS","HOME","BOOK","GAS"
  192. 1440  DATA "TELE","ELEC","UTIL","INSR","MISC"
  193. 1450  FOR I = 1 TO 12: READ M$(I): NEXT I
  194. 1460  DATA "JAN","FEB","MAR","APR"
  195. 1470  DATA "MAY","JUN","JUL","AUG"
  196. 1480  DATA "SEP","OCT","NOV","DEC"
  197. 1490 CH = 0: REM   DATA CHANGED FLAG
  198. 1500 D$ = "<CTRL-D>": REM  CTRL-D
  199. 1510  PRINT D$;"NOMON C,I,O"
  200. 1520 G$ = "<CTRL-G>": REM  CTRL-G
  201. 1530  REM 
  202. 1540  REM  THE FOLLOWING ROUTINE IS FROM THE MAY, 1980
  203. 1550  REM  ISSUE OF CALL APPLE.
  204. 1560  REM   IT PROVIDES THE ADDRESS OF THE FIRST ELEMENT
  205. 1570  REM  IN AN ARRAY THROUGH THE '&' FUNCTION.
  206. 1580  REM  THIS IS USED IN THE ROUTINES TO LOAD AND  SAVE 
  207. 1590  REM  THE ARRAY TO DISK
  208. 1600  REM 
  209. 1610  FOR I = 1 TO 10: READ N: POKE 937 +I,N: NEXT I
  210. 1620  DATA 32,227,223,141,168,3,140,169,3,96
  211. 1630  POKE 1013,76: POKE 1014,170: POKE 1015,3
  212. 1650  RETURN